package com.wjl.shop.service;

import com.wjl.shop.entity.Dealer;
import com.wjl.shop.entity.OperationAccountTable;

import java.util.List;
import java.util.Map;

/**
 * 经销商表(Dealer)表服务接口
 *
 * @author makejava
 * @since 2021-10-07 14:07:23
 */
public interface DealerService {

    /**
     * 通过ID查询单条数据
     *
     * @param id 主键
     * @return 实例对象
     */
    Dealer queryById(Integer id);

    /**
     * 查询多条数据
     *
     * @param offset 查询起始位置
     * @param limit  查询条数
     * @return 对象列表
     */
    List<Dealer> queryAllByLimit(int offset, int limit);

    /**
     * 新增数据
     *
     * @param dealer 实例对象
     * @return 实例对象
     */
    Dealer insert(Dealer dealer);

    /**
     * 修改数据
     *
     * @param dealer 实例对象
     * @return 实例对象
     */
    Dealer update(Dealer dealer);

    /**
     * 通过主键删除数据
     *
     * @param id 主键
     * @return 是否成功
     */
    boolean deleteById(Integer id);

    /**
     * 经销商通过用户名、密码查询单条数据实现登陆
     *
     * @param username 用户名
     * @param password 密码
     * @return 实例对象
     */
    Map<String,Object> dealerLogin(String username, String password);

    Map<String,Object> findByName(String name);

    /**
     *查询表中是否有对应信息的用户
     * @param dealer
     * @return 是否成功的信息
     */
    Map <String, Object> isName(Dealer dealer);

    /**
     * 查询经销商信息
     * @param dealer
     * @return 返回是否成功的信息和数据
     */
    Map <String, Object> queryBoss(Dealer dealer);

    /**
     * 插入经销商信息
     * @param dealer
     * @return 是否成功的信息
     */
    Map<String,Object> createDealer(Dealer dealer);

    /**
     * 删除经销商信息
     * @param dealer
     * @return 是否成功的信息
     */
    Map <String, Object> deleteDealer(Dealer dealer);

    /**
     * 通过经销商名查询账户信息
     * @param username
     * @return
     */
    Map<String,Object> findAccountInfo(String username);


    /**
     * 检查密码是否一致
     * @param username
     * @param password
     * @return
     */
    Map<String,Object> checkPassword(String username,String password,String newPassword,String confirm);

    /**
     * 修改密码
     * @param username
     * @param confirm
     * @return
     */
    Boolean updatePassword(String username,String confirm);
    /**
     * 重置密码
     * @param dealer
     * @return是否成功
     */
    Map <String, Object> rePassword(Dealer dealer);

    /**
     * 关联经销商信息
     * @param dealer
     * @return 返回是否成功
     */
    Map <String, Object> relationDealer(Dealer dealer);
    /**
     * 更改经销商信息
     * @param dealer
     * @return是否成功
     */
    Map <String, Object> updateDealer(Dealer dealer);
}
